Many financial and commercial data repositories and applications need to store and compute numerical data in decimal format. However, typical microprocessors do not provide native hardware support for decimal floating-point arithmetic. As a result, decimal numbers are usually converted into binary format for processing by binary floating-point arithmetic units and are converted back into decimal format after the arithmetic computations are completed. Since decimal numbers cannot be represented exactly in binary format, the conversions between the two formats may lead to precision errors. Although an error from a single conversion is generally small, many calculations and systems performing these calculations may require several back-and-forth conversions between the two formats, leading to larger and more significant errors.
In general, especially for commercial and financial applications, errors introduced by converting between decimal and binary numbers, even for a single conversion step, are unacceptable and may violate accuracy standards. Many current solutions use software-based computations that can eliminate precision errors. However, a software-based floating-point unit is several orders of magnitude slower than a hardware-based floating-point unit. This reduced performance is often unacceptable in settings that require high calculation throughput and/or low latency per calculation. In order to achieve accurate and fast decimal floating-point calculations, a hardware-based decimal floating-point unit is needed.